console.log("main start");

setTimeout(function setTimeout0() {
    console.log("T1:宏任务");
    Promise.resolve().then(() => {
        console.log("T2:微任务");
    });
});

new Promise(function (resolve, reject) {
    console.log("T3:Promise 构造");
    setTimeout(function setTimeout300() {
        console.log("T4:宏任务");
        resolve("T6");
        Promise.resolve().then(() => {
            console.log("T5:微任务");
        });
    }, 300);
}).then((res) => {
    console.log("T6:微任务");
});







//--------------1--------------------
// js 主线程 ： “main start”
//////  输出：“main start”

//--------------2-------------------
// js 主线程 ：setTimeout
// 宏任务：'T1:宏任务'（新增）

//--------------3-------------------
// js 主线程 ：new promise
// 宏任务：'T1:宏任务'                                  (增加倒计时300ms)

//////  输出：'T3:Promise 构造'

//--------------4-------------------
// js 主线程 ：'T1:宏任务'
// 宏任务：
// 微任务： ‘T2:微任务’（新增）

//////  输出：'T1 宏任务'

//--------------5-------------------
// js 主线程 ：‘T2:微任务’
// 宏任务：
// 微任务：

//////  输出：'T2:微任务'

//--------------5-------------------
//                                                        (倒计时0ms)
// js 主线程 ：
// 宏任务：‘T4:宏任务’
// 微任务：

//--------------6-------------------
//事件循环
// js 主线程 ：‘T4:宏任务’
// 宏任务：
// 微任务： 'T6:微任务'（新增）'T5:微任务'（新增）

////// 输出：'T4:宏任务'

//--------------7-------------------
// js 主线程 ：'T6:微任务'
// 宏任务：
// 微任务：'T5:微任务'

//////  输出：'T6:微任务'

//--------------8------------------
// js 主线程 ：'T5:微任务'
// 宏任务：
// 微任务：

///////  输出：'T5:微任务'
